Virtualization management software allows multiple virtual machines (VMs) to execute on a single hardware computing platform. Such management software also manages how computing resources are allocated to each VM. In addition, the virtualization management software can be configured to move VMs between servers (also referred to herein as “host systems” or “host computers”) in the cluster. An example of VM migration technology is VMware VMotion®, available from VMware, Inc. of Palo Alto, Calif. An example of the virtualization management software is VMware Distributed Resource Scheduler™, also available from VMware.
A resource management service handles the placement and scheduling of virtual machines (VMs) on a set of hosts, in accordance with a set of constraints and objectives. Doing an permits users to treat the set of hosts as one host, leaving the resource management service to handle the placement, migration, etc. of VMs onto particular hosts within the set of hosts. For example, to address constraint violations and achieve placement objectives, the cluster resource management service can generate and migrate VMs between hosts, as well as recommend to power on (or off) a host. For a VM to be powered-on a host within the host set, the set typically needs to have sufficient computing resources compatible with the VM's execution constraints to meet certain requirements, and those resources must be available in unfragmented form, i.e., all on a single host in the set.
Additionally, virtualized computing environments can implement a wide variety of redundancy techniques to establish a high availability system, or “HAS.” Such techniques set aside resources, such as hardware, systems, components, subsystems or even software, so that in the event of a failure, relevant functionality may be maintained or quickly recovered. Redundancy may be provided at any of a variety of levels. For example, conventional techniques for managing redundant information storage or transmission can use error correcting codes, cyclic redundancy checks, and/or storage array technologies such as RAID (“Reliable Array of Inexpensive Disks”). Redundant subsystems such as power supplies or storage controllers can also be employed to improve system availability.
In these traditional resource management services and high availability systems, specialized software needs to be developed to handle new VM placement constraints and objectives. For example, if a developer were to add a flash based cache to a hypervisor, as well as the ability to configure flash cache reservations for individual VMs, then the resource management service and high availability system must be updated to consider flash cache reservation constraints. Otherwise, the powering-on, migration, and restarting of VMs can fail where the constraints are not satisfied (e.g., where a VM requires a quantity of flash cache that cannot be provided by the host on which the VM is migrated or restarted). Implementing such constraints typically requires considerable modifications to code, including code used to collect required input data (e.g., relating to flash cache reservations and host capacity) and to process such input to determine whether the constraints are satisfied (e.g., whether the flash cache constraints are satisfied).